﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Website
{
    public partial class login : Form
    {
        public login()
        {
            InitializeComponent();
            
        }

        private void btnRegister_Click(object sender, EventArgs e)
        {
            Hide();
            register myregister = new register();
            myregister.StartPosition = FormStartPosition.CenterParent;
            myregister.ShowDialog();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            string userId = userIdLogin.Text;
            string password = userPasswordLogin.Text;
            string myconn = "server=PC-202006091644\\SQLEXPRESS;Initial Catalog=website;User ID=sa;Password=123456;Integrated Security=True";//数据库实例连接字符串
            SqlConnection sqlConnection = new SqlConnection(myconn);//新建数据库连接实例
            sqlConnection.Open();//打开数据库连接
            password = register.GetMD5(password);   //在同一个命名空间（在同一个文件夹中），可以访问Adduser里的GetMD5函数。 因为MD5加密算法不可逆，所以要把输入的密码加密和数据库里密码匹配。这样做以后，除了用户自己谁也不知道密码了。
            string sql = "select UserId,Password from [user] where userId='" + userId + "'and Password='" + password + "'";//SQL语句实现表数据的读取
            SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection);
            SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
            if (userIdLogin.Text == "")
            {
                MessageBox.Show("请输入用户名", "登陆失败");
                userIdLogin.Focus();
            }
            else if (userPasswordLogin.Text == "")
            {
                MessageBox.Show("请输入密码", "登陆失败");

            }
            else
            {
                if (sqlDataReader.HasRows)//满足用户名与密码一致，进入下一个界面
                {
                    //实现页面跳转
                    index form3 = new index();
                    this.Hide();     //隐藏当前窗体   
                    form3.ShowDialog();
                    Application.ExitThread();   //退出当前窗体，这一步很重要，否则最后可能无法将所有进程关闭。最好是在跳转页面后，将之前的页面退出。
                }
                else//如果登录失败，询问是否注册新用户
                {
                    DialogResult dr = MessageBox.Show("是否注册新用户？", "登录失败", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dr == DialogResult.Yes)//打开注册界面
                    {

                        register form2 = new register();
                        this.Hide();
                        form2.ShowDialog();
                        Application.ExitThread();
                    }
                    else
                    {
                        userIdLogin.Text = "";
                        userPasswordLogin.Text = "";
                        userIdLogin.Focus();
                        this.Show();
                    }
                }
            }
            sqlConnection.Close();
        }

        private void UserId_KeyPress(object sender, KeyPressEventArgs e)  //功能：输入用户名后，按 Enter键，光标到输入密码的TextBox中
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                userPasswordLogin.Focus();     //控制光标指向哪的
            }
        }

        private void Password_KeyPress(object sender, KeyPressEventArgs e)  //KeyPress事件，在控件具有焦点并且用户按下并释放某个键后发生
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                // Login_Button.Focus();
                btnLogin_Click(sender, e);
            }
        }
    }
}
